import axios from 'axios'
import Qs from 'qs'
import {getStore} from '../utils/util'
import { Dialog } from 'vant';

// 因为params是添加到url的请求字符串中的，用于get请求。 需要 Qs
// 而data是添加到请求体（body）中的， 用于post请求。

// 请求的配置信息
var config = {
  URL: 'http://xxxxxxxxxxxxxx', //
}


class Http {
  constructor(config) {
    this.axios = axios.create({
      baseURL: config.URL
    })
    this.URL = config.URL
    this.axios.defaults.headers['Content-Type'] = 'application/json '
    this.interceptorsRequest() // 请求拦截器
    this.interceptorsResponse() // 响应拦截器
  }

  interceptorsRequest() { // 请求拦截器
    this.axios.interceptors.request.use((config) => {
      config.headers['token'] = getStore('token') // 用户登录的凭证
      return config
    }, function (error) {
      // Toast('网络出错 稍后再试')
      console.log('&错误信息&',error,)
      return Promise.reject(error)
    })
  }

  interceptorsResponse() { // 响应拦截器
    this.axios.interceptors.response.use((response) => {
      var _data = new Date().getTime() //
      if (response.status === 200 && response.data.code === -100002) { // 拦截未登录去登录操作
        this.get('/wx/authorize').then((res) => {
          if (res){
            window.location.href = res.data
          }
        })
      } else if( response.data.code === -100004){
        alert(response.data.msg)
      } else if (response.data.code === 1000001) {
        return response.data
      }
    }, function (error) {
      console.log(error, '&网络异常&')
      // 对响应错误做点什么
      return Promise.reject(error)
    })
  }

  get(url, params = {}) {
    return this.axios({
      method: 'get',
      url,
      params,
      timeout: 10000
    })
  }

  post(url, data = {}) {
    return this.axios({
      method: 'post',
      url,
      data,
      timeout: 10000
    })
  }

  put(url, data = {}) {
    return this.axios({
      method: 'put',
      url,
      data,
      timeout: 10000
    })
  }

}

export const http = new Http(config)
